High performance computing (HPC) clusters are managed by job schedulers that are configured with policies that define how users access resources to run their applications. Job scheduling policies and their configuration aim to achieve goals such as throughput, response time, utilization levels, and meeting deadlines. Generally, job schedulers require a human expertise to be configured for achieving good performance. Policies may influence user behavior with respect to job submission and required resources on HPC clusters. For example, HPC clusters have queues for jobs that take short duration to execute, for example jobs that run for less than 6 hours. These queues usually have higher priority than queues designated to hold jobs that take longer duration, for example, jobs that run for more than 10 hours. Given such policies with respect to different types of queues, users may prefer to submit their jobs to the queue with higher priority, for example, those holding short duration jobs. Users may also try to divide a job that generally takes longer duration to execute into smaller pieces, so that those jobs can be submitted to the short job queue, and therefore, receive priority in running those jobs. Another example policy may include allowing a job queue to have access to specialized resources such Graphical Processing Units. Based on such policy, a user may prefer one queue over another queue when submitting a job. Despite the policies, however, resources may be wasted, which in turn increases use of energy, requires additional acquisition and maintenance of machines, and delays user access to the machines.